home *** CD-ROM | disk | FTP | other *** search
/ Day Cry / Day Cry CD.bin / oh_towns / ein / sources / einlib.lzh / LIBSRC.LZH / EIN_FS02.C < prev    next >
C/C++ Source or Header  |  1994-07-18  |  3KB  |  116 lines

  1. /*<Header>==============================================================
  2. *
  3. *    STRINGS OPERATION / "EIN_ST02.C"
  4. *
  5. *        [ EIN(tm) project : ò╢ÄÜù±æÇì∞òΓÅòè╓ÉöîQ ]
  6. *
  7. *    COPYRIGHT  Nam & é▌é±é╜é┴ü⌠  1994, All rights reserved.
  8. *
  9. *-----------------------------------------------------------------------
  10. *    V1.0L01â┐    94.07.16/Nam    âvâìâgâ^âCâv(é▌é±é╜é┴ü⌠é│é±é╠è╓Éöé≡ùÿùp)
  11. *</Header>==============================================================*/
  12. #include    <stdio.h>
  13. #include     <stdlib.h>
  14. #include     <string.h>
  15. #include    <snd.h>
  16. #include    <winb.h>
  17. #include    <te.h>
  18. #include    <fntb.h>
  19. #include    <gui.h>
  20.  
  21. #define    EIN_FSTR
  22. #include    "..\eintm.h"
  23.  
  24. #define __IsKanji1(x)    (((x)>0x080 && (x)<0x0A0)||((x)>0xDF && (x)<0x0FD))
  25.  
  26. /*======================================================================
  27. *    static int __isKanjiStr( char *str, char *pos )
  28. *
  29. *    üyèT  ùvüz    è┐ÄÜé╠ɵô¬âoâCâgé⌐ö█é⌐ö╗ò╩
  30. *
  31. *    üyï@  ö\üz    É▌ÆΦé│éΩé╜ò╢ÄÜù±(*str)ôαé╠ÄwÆΦê╩Æué╠ò╢ÄÜ(*pos)é¬
  32. *                è┐ÄÜé╠ɵô¬âoâCâgé⌐é╟éñé⌐ö╗ò╩é╖éΘ
  33. *
  34. *    üyôⁿ  ù═üz    *str;    : æ╬Å█ò╢ÄÜù±â|âCâôâ^
  35. *                *pos;    : æ╬Å█ò╢ÄÜâ|âCâôâ^
  36. *
  37. *    üyÅo  ù═üz
  38. *
  39. *    üyè╓ÉöÆlüz    ==1        : è┐ÄÜé╠ɵô¬âoâCâg
  40. *                ==0        : è┐ÄÜé╠ɵô¬âoâCâgé┼é═é╚éó
  41. *
  42. *    üyÆì  ê╙üz    è┐ÄÜé╠2âoâCâgû┌é╠ÅΩìçé╔é═'0'é≡ò╘é╖é╠é┼Æìê╙é╖éΘé▒é╞
  43. *
  44. *    üyÄQ  Å╞üz    
  45. *
  46. *-----------------------------------------------------------------------
  47. *    0.00    1991.01.27/Minta(GB_isKanjiStré╞é╡é─âvâìâgâ^âCâsâôâO)
  48. *    V11L10    1994.07.16/Nam
  49. *=====================================================================*/
  50. static int __isKanjiStr( char *str, char *pos )
  51. {
  52.     register char    flag = 1;
  53.  
  54.     if    ((pos == NULL) || (str == NULL) || (str > pos)) {
  55.         return 0;
  56.     }
  57.     if (__IsKanji1(*pos)){                    /* è┐ÄÜé╠ɵô¬âoâCâgé⌐éα?    */
  58.         for (pos--; str <= pos; pos--){        /* ò╢ÄÜù±Éµô¬ò√îⁿé╓æûì╕ */
  59.             if(!__IsKanji1(*pos)){            /* è┐ÄÜé╠ɵô¬âoâCâgé┼é═é╚éó */
  60.                 return flag;
  61.             } else {
  62.                 flag ^= 1;
  63.             }
  64.         }
  65.         return flag;
  66.     } else {                            /* è┐ÄÜé╠ɵô¬âoâCâgé┼é═é╚éó */
  67.         return 0;
  68.     }
  69. }
  70.  
  71.  
  72. /*<Func>================================================================
  73. *    char    *EIN_strrchr( char *str, char code )
  74. *
  75. *    üyèT  ùvüz    strrchré╠è┐ÄÜæ╬ë₧ö┼
  76. *
  77. *    üyï@  ö\üz    strchr()é╞ô»é╢ô«ì∞é≡,ò╢ÄÜù±é╠ÅIéφéΦé⌐éτìséñ(SJISæ╬ë₧)
  78. *
  79. *    üyôⁿ  ù═üz    *str;    : îƒì⌡ò╢ÄÜù±
  80. *                code;    : îƒì⌡ò╢ÄÜâRü[âh
  81. *
  82. *    üyÅo  ù═üz*dst        :
  83. *
  84. *    üyè╓ÉöÆlüz    !=NULL        É│ÅφÅIù╣(îƒì⌡ò╢ÄÜâAâhâîâX)
  85. *                ==NULL            ê┘ÅφÅIù╣(îƒì⌡ò╢ÄÜé¬û│é⌐é┴é╜)
  86. *
  87. *    üyÆì  ê╙üz    
  88. *
  89. *    üyÄQ  Å╞üz    
  90. *
  91. *-----------------------------------------------------------------------
  92. *    0.00    1991.01.27/Minta(GB_strchrRevé╞é╡é─âvâìâgâ^âCâsâôâO)
  93. *    V11L10    1994.07.16/Nam
  94. *</Func>==============================================================*/
  95. char    *EIN_strrchr( char *str, char code )
  96. {
  97.     char    *wp;                            /* îƒì⌡æ╬Å█â|âCâôâ^    */
  98.  
  99.     if (str == NULL) {
  100.         return NULL;
  101.     }
  102.     for (wp = str + strlen(str) - 1; wp >= str; wp--) {
  103.         if (*wp == code) {
  104.             if (wp > str) {
  105.                 if (__isKanjiStr(str, wp-1)) {
  106.                     wp--;
  107.                     continue;
  108.                 }
  109.             }
  110.             return wp;
  111.         }
  112.     }
  113.     return NULL;
  114. }
  115.  
  116.